﻿using Orleans;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Common
{
    /// <summary>
    /// 所有AGV的集合
    /// </summary>
    public interface IAgvSet : IGrainWithIntegerKey
    {
        Task 更新AGV信息(long AgvID, Agv状态 状态, int X, int Y );

        Task<List<AGV位置>> 获取所有AGV的位置();

        Task 更新AGV占用传输机台(long AgvID, string DeviceID, string MarkerID);
        Task<long> 获取传输机台处的AGV(string DeviceID);

        Task<List<string>> 过滤占用机台(List<string> list);
    
    }


    #region 数据定义
     
    public class AGV位置
    {
        public long AgvID { get; set; }
        public int X { get; set; }
        public int Y { get; set; }

        public int Status { get; set; }
    }


    public enum Agv状态
    {
        行驶 = 1,
        停止 = 2,
        交管中 = 3,
        到达 = 4,
        异常 = 5,
        上层传出中 = 6,
        下层传出中 = 7,
        上层传入中 = 8,
        下层传入中 = 9,

        上层传出完成 = 10,
        下层传出完成 = 11,
        上层传入完成 = 12,
        下层传入完成 = 13,

        上入下出中 = 14,
        上出下入中 = 15,

        上入下出完成 = 16,
        上出下入完成 = 17,

        可传输 = 18,
    }

    #endregion
}
